'''
Created on Feb 22, 2017

@author: zhangyf
'''
'''
choice() 函数
 
描述
    choice() 方法返回一个列表，元组或字符串的随机项。
语法
    以下是 choice() 方法的语法:
    
import random
random.choice( seq  )
注意：choice()是不能直接访问的，需要导入 random 模块，然后通过 random 静态对象调用该方法。

参数
    seq -- 可以是一个列表，元组或字符串。

返回值
    返回随机项。
实例
    以下展示了使用 choice() 方法的实例： 
'''

import random

print ("从 range(100) 返回一个随机数 : ",random.choice(range(100)))
print ("从列表中 [1, 2, 3, 5, 9]) 返回一个随机元素 : ", random.choice([1, 2, 3, 5, 9]))
print ("从字符串中 'Runoob' 返回一个随机字符 : ", random.choice('Runoob'))

'''
 以上实例运行后输出结果为：

从 range(100) 返回一个随机数 :  68
从列表中 [1, 2, 3, 5, 9]) 返回一个随机元素 :  2
从字符串中 'Runoob' 返回一个随机字符 :  u
'''


'''
从指定范围内，按指定基数递增的集合中获取一个随机数，基数缺省值为1
'''
'''
randrange() 函数
描述
    randrange() 方法返回指定递增基数集合中的一个随机数，基数缺省值为1。
语法
     以下是 randrange() 方法的语法:
   import random
   random.randrange ([start,] stop [,step])
注意：randrange()是不能直接访问的，需要导入 random 模块，然后通过 random 静态对象调用该方法。

参数
    start -- 指定范围内的开始值，包含在范围内。
    stop -- 指定范围内的结束值，不包含在范围内。
    step -- 指定递增基数。
返回值
        从给定的范围返回随机项。
实例
        以下展示了使用 randrange() 方法的实例：
'''
import random
# 从 1-100 中选取一个奇数
print(random.randrange(1,100,2))

#从 0-99 选取一个随机数
print(random.randrange(100))


'''
 random() 函数
描述
    random() 方法返回随机生成的一个实数，它在[0,1)范围内。
语法
    以下是 random() 方法的语法:
    import random
    random.random()
注意：random()是不能直接访问的，需要导入 random 模块，然后通过 random 静态对象调用该方法。
参数
    无
返回值
    返回随机生成的一个实数，它在[0,1)范围内。
实例
    以下展示了使用 random() 方法的实例：
'''
print(random.random())
print(random.random())


'''
seed() 函数
描述
    seed() 方法改变随机数生成器的种子，可以在调用其他随机模块函数之前调用此函数。。
语法
    以下是 seed() 方法的语法:
    import random
    random.seed ( [x] )
注意：seed()是不能直接访问的，需要导入 random 模块，然后通过 random 静态对象调用该方法。
参数
    x -- 改变随机数生成器的种子seed。如果你不了解其原理，你不必特别去设定seed，Python会帮你选择seed。
返回值
    本函数没有返回值。
实例
    以下展示了使用 seed(() 方法的实例：
'''
random.seed()
print(random.random())

random.seed(10)
print(random.random())

random.seed("hello",2)
print(random.random())


'''
shuffle() 函数
描述
    shuffle() 方法将序列的所有元素随机排序。
语法
    以下是 shuffle() 方法的语法:
    import random
    random.shuffle (lst )
注意：shuffle()是不能直接访问的，需要导入 random 模块，然后通过 random 静态对象调用该方法。
参数
    lst -- 可以是一个序列或者元组。
返回值
    返回随机排序后的序列。
实例
    以下展示了使用 shuffle() 方法的实例：
'''
list=[20,16,10,5]
random.shuffle(list)
print("随机排序：",list)


random.shuffle(list)
print("随机排序：",list)


'''
uniform() 函数
描述
    uniform() 方法将随机生成下一个实数，它在[x,y]范围内。
语法
    以下是 uniform() 方法的语法:
    import random
    random.uniform(x, y)
注意：uniform()是不能直接访问的，需要导入 random 模块，然后通过 random 静态对象调用该方法。
参数
    x -- 随机数的最小值。
    y -- 随机数的最大值。
返回值
    返回一个浮点数。
实例
    以下展示了使用 uniform() 方法的实例：
'''
print("uniform(5, 10) 的随机浮点数 : ", random.uniform(5,7))
print("uniform(7, 14) 的随机浮点数 : ", random.uniform(5,7))

'''运行结果
uniform(5, 10) 的随机浮点数 :  6.330192519765092
uniform(7, 14) 的随机浮点数 :  6.286333250407992
'''
